#ifndef PhongMarbleMaterial_h
#define PhongMarbleMaterial_h


#include "Material.h"
#include "Color.h"

class PhongMarbleMaterial : public Material {
 public:
  PhongMarbleMaterial(const Color& c1, const Color& c2,
                      double scale, int octaves, double tscale, double fscale,
                      double lacunarity, double gain,
                      float Kd, float Ka, const Color& phong_color, int phong_exponent);
  virtual ~PhongMarbleMaterial();

  virtual void shade(Color& result, const RenderContext& context, const Ray& ray,
                     const HitRecord& hit, const Color& atten, int depth) const;

 private:
  PhongMarbleMaterial(const PhongMarbleMaterial&);
  PhongMarbleMaterial& operator=(const PhongMarbleMaterial&);

  Color c1, c2;
  double scale;
  int octaves;
  double tscale;
  double fscale;
  double lacunarity;
  double gain;
  float Kd;
  float Ka;
  Color phong_color;
  int phong_exponent;
};

#endif
